/**
 * author:Administrator
 * date:2016/2/24
 * desc:TODO
 */

'use strict';

class BaseRepo {
  constructor(repoImpl) {
    this.repoImpl = repoImpl;
  }

  /**
   * @param   {Number}    id
   * @returns {Object}    pojo
   */
  * find(id) {
    return yield this.repoImpl.find(id);
  }

  * update(where, updateAttr) {
    return yield this.repoImpl.update(where, updateAttr);
  }
  
  /**
   * @param   {Object}    entity
   * @returns {void}
   */
  * store(entity) {
    yield this.repoImpl.store(entity);
  }

  /**
   * @param   {Number}      id
   * @param   {Boolean}     isTrue
   * @returns {void}
   */
  * destroy(id, isTrue) {
    yield this.repoImpl.destroy(id, !!isTrue);
  }
}

module.exports = BaseRepo;
